<!--  -->
<template>
  <div class="page-wrap auth"></div>
</template>

<script>
import { clientService, ssoService } from '@/api'
import CONFIG from '@/config/config'
import storage from '@/utils/storage'
export default {
  data() {
    return {
      key: null,
      //appId: 'cli_a4493b9d88fc900b',
      //    appId: 'cli_a466e11380b1500b',//测试
      appId: 'cli_a466e0af9678d00c', //正式
      token: '',
      loginCount: 0,
      state: undefined,
    }
  },
  //组件
  components: {},
  //在实例创建完成后被立即调用
  created: function () {
    console.log(23, this.$route)
    // this.token = this.$route.query.token
    // this.key = this.$route.query.key
    // this.appId = storage.getItem(CONFIG.APPID)
    this.code = this.$route.query.code
    this.state = this.$route.query.state
    this.init()
  },
  //计算属性  将被混入到 Vue 实例中。所有 getter 和 setter 的 this 上下文自动地绑定为 Vue 实例。
  computed: {},
  //dom 加载完后执行
  mounted: function () {},
  //方法
  methods: {
    init() {
      if (this.code) {
        this.login()
        return
      } else {
        this.feishuLogin()
      }
      // if (this.token) {
      //   this.v2TokenLogin()
      //   return
      // }
      // if(this.loginType){
      // this.loading = this.$loading({
      //   lock: true,
      //   text: '正在登录中……',
      //   spinner: 'el-icon-loading',
      //   background: 'rgba(0, 0, 0, 0.7)'
      // })
      // } else {
      //   console.log('跳转到别的地方')
      // }
      // 如果有key
      // if (this.key) {
      //   localStorage.removeItem(CONFIG.TOKEN)
      //   localStorage.removeItem(CONFIG.USER_INFO)
      //   localStorage.removeItem(CONFIG.APPID)
      //   localStorage.removeItem(CONFIG.KEY)
      //   // 若含有 key,则是由特殊链接进入,获取 appID
      //   this.feishuLogin()
      // } else {
      //   this.loading && this.loading.close()
      //   // 这里跳转进入绑定飞书APP页面
      //   // this.$router.replace({ name: 'BindFeishu' })
      //   let key = storage.getItem(CONFIG.KEY)
      //   if(this.appId && key) {
      //     this.key = key
      //     this.feishuLogin()
      //   } else {
      //    // this.$router.replace({ name: 'Login' })
      //   }
      // }
    },
    feishuLogin() {
      const target = `https://open.feishu.cn/open-apis/authen/v1/index?app_id=${
        this.appId
      }&redirect_uri=${encodeURIComponent(location.origin + location.pathname)}&state=${
        this.$route.query.diy_redirect ? encodeURIComponent(this.$route.query.diy_redirect) : ''
      }`
      console.log(53, target)
      window.location.replace(target)
      // clientService.unionLogin({ key: this.key }).then(json => {
      //   this.loading && this.loading.close()
      //   let res = json.result
      //   if (!json.error) {
      //     this.appId = res.AppId
      //     storage.setItem(CONFIG.APPID, this.appId)
      //     storage.setItem(CONFIG.KEY, this.key)
      //     let url = this.$route.query.back
      //     console.log(53, url)

      //   } else {
      //     this.$router.replace({ name: 'Login' })
      //   }
      // })
    },

    login() {
      //let key = storage.getItem(CONFIG.KEY)
      let par = {
        code: this.code,
        // key,
      }
      ssoService.fsLogin(par).then(async (json) => {
        console.log(47, json)
        if (json && !json.error) {
          let res = json.result
          // this.save(res)
          storage.setItem(CONFIG.TOKEN, res.openId)
          storage.setItem(CONFIG.NAME, res.name)
          storage.setItem(CONFIG.USERID, res.userId)
          storage.setItem(CONFIG.OPENID, res.openId)
          storage.setItem(CONFIG.ADMINPERMISSION, res.permission)
          // await this.getUserInfo()
          //跳转入首页
          let url = this.state
          console.log(89, url)
          this.$router.replace(url || '/').catch(() => {})
        } else {
          // this.$router.replace({ name: 'Login' })
        }
      })
    },
    // 根据token 登录
    v2TokenLogin() {
      storage.setItem(CONFIG.TOKEN, this.token)
      this.$router.replace({ name: 'dashboard' })
    },
    // 获取用户信息
    async getUserInfo() {
      let json = await clientService.getUserInfo()
      let res = json.result
      if (!json.error) {
        this.$store.commit('SET_USERINFO', res)
        storage.setItem(CONFIG.USERINFO, JSON.stringify(res))
      }
    },
  },
  //一个对象，键是需要观察的表达式，值是对应回调函数
  watch: {},
}
</script>

<style scoped lang="less">
@import './auth.less';
</style>
